package validator

import (
	"github.com/go-playground/validator/v10"
	"regexp"
)

// 定制手机号验证 validator
func ValidateBool(fl validator.FieldLevel) bool {
	isBool := fl.Field()

	_, ok := isBool.Interface().(bool)
	return ok
}

// 定制手机号验证 validator
func ValidateEmail(fl validator.FieldLevel) bool {
	mobile := fl.Field().String()

	emailRegexPattern := `^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$`

	// Compile the regular expression
	ok, _ := regexp.MatchString(emailRegexPattern, mobile)
	// 使用正则表达式判断是否合法
	if !ok {
		return false
	}
	return true
}

func ValidateMobile(fl validator.FieldLevel) bool {
	mobile := fl.Field().String()

	regexPattern := `\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}`

	// Compile the regular expression
	ok, _ := regexp.MatchString(regexPattern, mobile)
	// 使用正则表达式判断是否合法
	if !ok {
		return false
	}
	return true
}

// 判断性别是否在其中
func In(target string, str_array []string) bool {
	for _, element := range str_array {
		if target == element {
			return true
		}
	}
	return false
}

func ValidateGender(fl validator.FieldLevel) bool {
	gender := fl.Field().String()
	gender_list := []string{"male", "female"}
	ok := In(gender, gender_list)
	// 使用正则表达式判断是否合法
	if !ok {
		return false
	}
	return true
}

// 定制后缀证 validator
func ValidateFileSuffix(fl validator.FieldLevel) bool {
	fileSuffix := fl.Field().String()

	// 使用正则表达式判断是否合法
	ok, _ := regexp.MatchString(`^\..*`, fileSuffix)
	if !ok {
		return false
	}
	return true
}

// 定制后缀证 validator
func ValidateImage(fl validator.FieldLevel) bool {
	fileSuffix := fl.Field().String()

	// 使用正则表达式判断是否合法
	ok, _ := regexp.MatchString(`^.*?\..*`, fileSuffix)
	if !ok {
		return false
	}
	return true
}
